9 research outputs found

    Resource-based Verification for Robust Composition of Aspects

    Get PDF
    Aspect Oriented Software Development has been proposed as a means to improve modularization of software in the presence of crosscutting concerns. Compared to object-oriented or procedural approaches, Aspect Oriented Programming (AOP) has not yet been applied in many industrial applications. In this thesis we investigate the application of AOP within an industrial context and propose a novel solution to the problem of behavioral conflicts between aspects. We report on our experience transferring an aspect-oriented solution to a company called Advanced Semi-conductor Material Lithography (ASML). We investigate the acceptance criteria for AOP in industry, based on two industrial cases studies. We present a process that includes quantification of the benefits of AOP and elicitation of key worries expressed by stakeholders. We conducted a controlled experiment to assess the advantages and disadvantages of an aspect-based approach using a tracing example. Twenty developers from ASML were requested to carry out five maintenance scenarios. This experiment has shown that, in case the tracing concern is implemented using an AOP implementation instead of a procedural language, the development effort is on average 6% reduced while the impact of errors is reduced by 77%, for maintaining code related to tracing. For a subset of the scenarios, the results were statistically significant on a confidence interval of 95%. The so-called aspect interference problem is one of the major concerns in introducing AOP. Aspects can be developed independently and behave correct in isolation. However, due to intended or unintended composition of aspects, undesired behavior can emerge. In this thesis we focus on behavioral conflicts between aspects at shared join points. These are illustrated by a realistic example based on crosscutting concerns from ASML. We present an approach for the detection of behavioral interference that is based on a novel abstraction of the behavior of aspects, using resources and operations. This abstraction enables the expression of behavior in a simple manner that is suitable for automated detection of interference among aspects. The approach employs a set of conflict detection rules that can be used to detect both generic conflicts as well as domain specific conflicts. Our approach is general for AOP languages, its application to one specific AOP language Composition Filters is also illustrated in this thesis. The application to Composition Filters demonstrates how the use of a declarative advice language can be exploited for automated conflict detection. We detail the analysis process and discuss what information is required from the aspect developer to be able perform the analysis. We also discuss when static analysis is insufficient for detecting behavioral conflicts. We present a run time extension aiming at detecting dynamic conflicts. We discuss optimizations for this run time approach, which exploits the static verification results. Finally, we propose three improvements to the Composition Filters model to support automated and manual reasoning even further. The first improvement separates what behavior is executed from when this behavior is executed. Secondly, we introduce atomic filters that can be used to build more complex filters. The semantics of these filters are well defined. Although this approach has clear benefits from an automated reasoning perspective, the introduction of atomic filters results in the definition of numerous filters for specifying more complex behavior. Therefore, we introduce a filter composition language that enables the declarative composition of (atomic) filters, such that composed filter behavior can be reused elsewhere

    Formal model for SECRET

    Get PDF
    This technical report provides a formal model for detecting semantic conflicts between aspects. The presented model abstracts from any AOP approach specifics. In we make a preliminary instantiation of this formal model for the Composition Filter approach, we do plan to extend this work with an instantiation for AspectJ. The document starts with an example of a semantic conflict, next our approach is informally explained and finally the formal model is presented

    Reasoning about Behavioral Conflicts between Aspects

    No full text
    Aspects have been successfully promoted as a means to improve the modularization of software in the presence of crosscutting concerns. The so-called aspect interference problem is considered to be one of the remaining challenges of aspect-oriented software development: aspects may interfere with the behavior of the base code or other aspects. Especially interference between aspects is difficult to prevent, as this may be caused solely by the composition of aspects that behave correctly in isolation. A typical situation where this may occur is when multiple advices are applied at the same, or shared, join point. In this paper we explain the problem of behavioral conflicts between aspects at shared join points, illustrated by a real-world example. We present an approach for the detection of behavioral conflicts that is based on a novel abstraction model for representing the behavior of advice. This model allows the expression of both primitive and complex behavior in a simple manner that is suitable for automated conflict detection. The approach employs a set of conflict detection rules which can be used to detect both generic conflicts as well as domain- or application specific conflicts. This approach is general for AOP languages, and its application to both Compose* and AspectJ is illustrated in this paper. The application to Compose* demonstrates how the use of a declarative advice language can be exploited for fully automated conflict detection, without the need to annotate the aspect behavior. The approach has been implemented and tested within the Compose* and CAPE environments

    Compose*: a Language- and Platform-Independent Aspect Compiler for Composition Filters

    Get PDF
    This paper presents Compose*, a compilation and execution framework for the Composition Filters model. The Composition Filters model is designed to improve the composability of object-based programs. It is claimed that this approach is largely language-independent, and has previously been applied to languages such as Smalltalk, Java and C++. However, building a new Composition Filters compiler for each target language results in the duplication of compilation technology. Therefore, one of the aims of Compose* is to provide a language and platform independent compiler framework for the Composition Filters model. This paper provides the design rationale behind a tool architecture that supports this language and platform independence. It explains the use of language independent abstractions of the base program structure and how to include existing tools, such as compilers, to interface with the target language. The language and platform independence of Compose* has been verified by applying the compiler framework to multiple languages of the .NET platform, the Java language and platform and the C language

    Detecting behavioral conflicts among crosscutting concerns

    No full text
    Aspects have been successfully promoted as a means to improve the modularization of software in the presence of crosscutting concerns. Within the Ideals project, aspects have been shown to be valuable for improving the modularization of idioms (see also Chapter 1). The so-called aspect interference problem is considered to be one of the remaining challenges of aspect-oriented software development: aspects may interfere with the behavior of the base code or other aspects. Especially interference among aspects is dif��?cult to prevent, as this may be caused solely by the composition of aspects that behave correctly in isolation. A typical situation where this may occur is when multiple advices are applied at the same, or shared, join point. In this chapter we explain the problem of behavioral conflicts among aspects at shared join points, illustrated by aspects that represent idioms: Parameter checking and Error propagation. We present an approach for the detection of behavioral conflicts that is based on a novel abstraction model for representing the behavior of advice. The approach employs a set of conflict detection rules which can be used to detect both generic conflicts as well as domain or application speci��?c conflicts. One of the benefits of the approach is that it neither requires the application programmers to deal with the conflict models, nor does it require a background in formal methods for the aspect programmers

    Reasoning about Semantic Conflicts between Aspects

    No full text
    Aspects have been successfully promoted as a means to improve the modularization of software in the presence of crosscutting concerns. The socalled aspect interference problem is considered to be one of the remaining challenges of aspect-oriented software development: when multiple aspects share the same join point, undesired behavior may emerge. Such behavior is not necessarily caused by a wrong implementation of the individual aspects, but may be the result of composition of the independently programmed aspects at the shared join point. This paper presents a language-independent technique to detect semantic conflicts among aspects that are superimposed on the same join point
    corecore